package wxapp

import (
	"bytes"
	"encoding/json"
	"huling/app/model"
	"io"
	"io/ioutil"
	"net/http"
	"time"

	"github.com/gohouse/gorose/v2"
)

func DB() gorose.IOrm {
	return model.DB.NewOrm()
}

// tool
// 发送GET请求
// url：         请求地址
// response：    请求返回的内容
func Get(url string) string {
	// 超时时间：5秒
	client := &http.Client{Timeout: 5 * time.Second}
	resp, err := client.Get(url)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	var buffer [512]byte
	result := bytes.NewBuffer(nil)
	for {
		n, err := resp.Body.Read(buffer[0:])
		result.Write(buffer[0:n])
		if err != nil && err == io.EOF {
			break
		} else if err != nil {
			panic(err)
		}
	}
	return result.String()
}

// 返回错误
func Get_x(url string) (string, error) {

	// 超时时间：2秒
	client := &http.Client{Timeout: 3 * time.Second}
	resp, err := client.Get(url)
	if err != nil {
		return "", err
	}
	defer resp.Body.Close()
	var buffer [512]byte
	result := bytes.NewBuffer(nil)
	for {
		n, err := resp.Body.Read(buffer[0:])
		result.Write(buffer[0:n])
		if err != nil && err == io.EOF {
			break
		} else if err != nil {
			return "", err
		}
	}
	return result.String(), nil
}

// 发送POST请求
// url：         请求地址
// data：        POST请求提交的数据
// contentType： 请求体格式，如：application/json
// content：     请求放回的内容
func Post(url string, data interface{}, contentType string) string {

	// 超时时间：5秒
	client := &http.Client{Timeout: 5 * time.Second}
	jsonStr, _ := json.Marshal(data)
	resp, err := client.Post(url, contentType, bytes.NewBuffer(jsonStr))
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	result, _ := ioutil.ReadAll(resp.Body)
	return string(result)
}
func Postwxa(url string, data interface{}, contentType string) interface{} {

	// 超时时间：5秒
	client := &http.Client{Timeout: 5 * time.Second}
	jsonStr, _ := json.Marshal(data)
	resp, err := client.Post(url, contentType, bytes.NewBuffer(jsonStr))
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	result, _ := ioutil.ReadAll(resp.Body)
	return result
}

// 　合并数组
func mergeArr(a, b []interface{}) []interface{} {
	var arr []interface{}
	for _, i := range a {
		arr = append(arr, i)
	}
	for _, j := range b {
		arr = append(arr, j)
	}
	return arr
}

// 判断元素是否存在数组中
func IsContain(items []interface{}, item interface{}) bool {
	for _, eachItem := range items {
		if eachItem.(int64) == item.(int64) {
			return true
		}
	}
	return false
}

// 判断元素是否存在数组中-转string比较
func IsContain_str(items []interface{}, item interface{}) bool {
	for _, eachItem := range items {
		if eachItem.(string) == item.(string) {
			return true
		}
	}
	return false
}

// 时间戳格式-Y仅获取年月日-F
func TimeToStr(chuo int64, type_key string) string {
	timeTemplate := "2006-01-02 15:04:05"
	if type_key == "Y" {
		timeTemplate = "2006-01-02"
	} else if type_key == "F" {
		timeTemplate = "2006-01-02 15:04"
	}
	tm := time.Unix(int64(chuo), 0)
	timeStr := tm.Format(timeTemplate)
	return timeStr
}
